#!/usr/bin/env node

import { execSync } from 'child_process';
import readline from 'readline';
import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

// 提交类型选项
const commitTypes = [
  { value: 'feat', label: '新增功能' },
  { value: 'fix', label: '修复问题' },
  { value: 'docs', label: '文档更新' },
  { value: 'style', label: '代码格式' },
  { value: 'refactor', label: '代码重构' },
  { value: 'test', label: '测试相关' },
  { value: 'chore', label: '构建工具' }
];

console.log('🚀 智能提交工具\n');

// 显示提交类型选项
console.log('请选择提交类型:');
commitTypes.forEach((type, index) => {
  console.log(`${index + 1}. ${type.value} - ${type.label}`);
});

rl.question('\n请输入选项编号 (1-7): ', (typeIndex) => {
  const selectedType = commitTypes[parseInt(typeIndex) - 1];
  
  if (!selectedType) {
    console.log('❌ 无效的选项');
    rl.close();
    return;
  }
  
  rl.question(`请输入提交信息 (${selectedType.label}): `, (message) => {
    if (!message.trim()) {
      console.log('❌ 提交信息不能为空');
      rl.close();
      return;
    }
    
    try {
      // 构建完整的提交信息
      const commitMsg = `${selectedType.value}: ${message}`;
      
      // 添加所有文件到暂存区
      execSync('git add .', { stdio: 'inherit' });
      
      // 提交
      execSync(`git commit -m "${commitMsg}"`, { stdio: 'inherit' });
      
             // 更新 CHANGELOG
       const updateScript = path.join(__dirname, 'update-changelog.js');
      execSync(`node "${updateScript}" "${commitMsg}" "${selectedType.value}"`, { stdio: 'inherit' });
      
      // 将更新后的 CHANGELOG 添加到新的提交
      execSync('git add CHANGELOG.md', { stdio: 'inherit' });
      execSync('git commit --amend --no-edit', { stdio: 'inherit' });
      
      console.log('\n✅ 提交成功！');
      console.log(`📝 提交信息: ${commitMsg}`);
      console.log('📋 CHANGELOG.md 已自动更新');
      
    } catch (error) {
      console.error('❌ 提交失败:', error.message);
    }
    
    rl.close();
  });
});
